import cv2
import matplotlib.pyplot as plt

# 读取图像
img = cv2.imread("tk.jpeg", 0)  # 0表示以灰度模式读取图像

# 显示原始图像和直方图
plt.subplot(2, 2, 1)  # 2行2列的第1个位置
plt.imshow(img, 'gray')
plt.title("img")
plt.xticks([])  # 隐藏x轴刻度
plt.yticks([])  # 隐藏y轴刻度

plt.subplot(2, 2, 2)  # 2行2列的第2个位置
plt.hist(img.ravel(), 256, [0, 256])
plt.title("hist")
plt.xticks([])  # 隐藏x轴刻度
plt.yticks([])  # 隐藏y轴刻度

# 直方图均衡化
img_equal = cv2.equalizeHist(img)  # 直方图均衡化函数

# 显示均衡化后的图像和直方图
plt.subplot(2, 2, 3)  # 2行2列的第3个位置
plt.imshow(img_equal, 'gray')
plt.title("img_equal")
plt.xticks([])  # 隐藏x轴刻度
plt.yticks([])  # 隐藏y轴刻度

plt.subplot(2, 2, 4)  # 2行2列的第4个位置
plt.hist(img_equal.ravel(), 256, [0, 256])
plt.title("img_equal_hist")
plt.xticks([])  # 隐藏x轴刻度
plt.yticks([])  # 隐藏y轴刻度

# 显示所有图像
plt.show()